/*
 * Copyright 2020-2030 ALPHA LAB.Inc All Rights Reserved.
 */
package com.alphalab.framework.log;

/**
 * 日志接口.
 * 日志只分4个级别，按优先级高至低依次是：ERROR、WARN、INFO、DEBUG.
 * @author allen 
 * @version 1.0.0 2020年2月17日
 */
public interface IMoLog {
	
	/**
	 * error级别是否已启用.
	 * @return boolean
	 */
	boolean isErrorEnabled();

	/**
	 * warn级别是否已启用.
	 * @return boolean
	 */
	boolean isWarnEnabled();
	
	/**
	 * info级别是否已启用.
	 * @return boolean
	 */
	boolean isInfoEnabled();
	
	/**
	 * debug级别是否启用.
	 * @return boolean
	 */
	boolean isDebugEnabled();
	
	/**
	 * error级别日志打印.
	 * @param paramObject 需打印的内容
	 */
	void error(Object paramObject);

	/**
	 * error级别日志打印.
	 * @param paramThrowable 异常
	 */
	void error(Throwable paramThrowable);
	
	/**
	 * error级别日志打印.
	 * @param message 需打印的字符串内容
	 * @param params 占位符值,分别对应message中的{0}、{1}...
	 */
	void error(String message, Object... params);
	
	/**
	 * error级别日志打印.
	 * @param paramObject 需打印的内容
	 * @param paramThrowable 异常
	 */
	void error(Object paramObject, Throwable paramThrowable);
	
	/**
	 * warn级别日志打印.
	 * @param paramObject 需打印的内容
	 */
	void warn(Object paramObject);
	
	/**
	 * warn级别日志打印.
	 * @param message 需打印的字符串内容
	 * @param params 占位符值,分别对应message中的{0}、{1}...
	 */
	void warn(String message, Object... params);
	
	/**
	 * warn级别日志打印.
	 * @param paramObject 需打印的内容
	 * @param paramThrowable 异常
	 */
	void warn(Object paramObject, Throwable paramThrowable);
	
	/**
	 * info级别日志打印.
	 * @param paramObject 需打印的内容
	 */
	void info(Object paramObject);
	
	/**
	 * info级别日志打印.
	 * @param message 需打印的字符串内容
	 * @param params 占位符值,分别对应message中的{0}、{1}...
	 */
	void info(String message, Object... params);
	
	/**
	 * debug级别日志打印.
	 * @param paramObject 需打印的内容
	 */
	void debug(Object paramObject);
	
	/**
	 * debug级别日志打印.
	 * @param message 需打印的字符串内容
	 * @param params 占位符值,分别对应message中的{0}、{1}...
	 */
	void debug(String message, Object... params);
	
	/**
	 * debug级别日志打印.
	 * @param paramObject 需打印的内容
	 * @param paramThrowable 异常
	 */
	void debug(Object paramObject, Throwable paramThrowable);

}
